$(function(){
	 
	//页面初始化
	myDomInit();
	
});



/*************************************小工具***************************************************/

/**
 * 是否为空
 */
function isNull(obj) {
	if (obj == null || obj == '' || typeof(obj)=="undefined") {
		return true;
	}else {
		return false;
	}
}

/**
 * 得到地址栏get参数
 */
function getQueryString(name) { 
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); 
	var r = window.location.search.substr(1).match(reg); 
	if (r != null) {
		return unescape(r[2]);  
	}
	return null;
} 
/**
 * 得到性别
 */
function getSexName(logic) {
	if (logic == 0 || logic == "0" || logic == false) {
		return "女";
	}
	return "男";
}

/**
 * 时间转换:('YYYY-MM-DD HH:mm:ss')
 */
function getDefaultTime(time) {
	var result = moment(time).format('YYYY-MM-DD HH:mm:ss');
	return result;
}
function getFormatTime(time,format) {
	var result = moment(time).format(format);
	return result;
}

/**
 * 对字符串解析(保证<和>等符号在html中正确显示)
 */
function charConvert(str) {
	str = str.replace(/</g, '&lt;');
	str = str.replace(/>/g, '&gt;');
	return str;
}

function isDate(dateString){
	  if(dateString.trim()==""){
		  return false;
	  }
	  var r=dateString.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
	  
	  if(r==null){
		  return false;
	  }
	  var d=new Date(r[1],r[3]-1,r[4]);  
	  var num = (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
	  if(num==0){
		  return false;
	  }
	  return true;
} 

function isEndDateGreaterThanStartDate(startDate,endDate){  
    var t1 = new Date(startDate);     
    var t2 = new Date(endDate);    
              
    if(Date.parse(t1) - Date.parse(t2) >= 0){     
        return false;   
    }else{  
        return true;  
    }  
}  


/**
 * 表单reset(),包括输入数据、效验样式
 * @param formId 表单id，(注意带有#)
 */
function formReset(formId) {
	//数据还原
	$(formId)[0].reset();
	
	//效验提示还原
	//。children()只往下找一级，而find()找到最里面 
	//$('li.item-ii').find('li') 等价于 $('li', 'li.item-ii')。
	$("label.error", formId).remove();//使用validate默认的样式产生的label
	$("i.my-tip-i", formId).remove();//自己定义的效验样式提示
	$("label.my-tip-label", formId).remove();//自己定义的效验样式提示
	
	//默认的样式输入的input框有可能是error
	$("*", formId).each(function(){
		$(this).removeClass("error has-success has-error");
	});
	
}

/**
 * 效验提示label标签reset(),添加新样式之前应该删掉老样式
 * @param input 输入框标签jq对象
 */
function labelReset(element) {
	if(!(element instanceof jQuery)){ 
		element = $(element);
	}
	var parent = element.parent();
	element.removeClass("success error");
	
	parent.find("label.my-tip-label").remove();
	parent.find("i.my-tip-i").remove();
}

/**
 * 表单效验成功或者失败后的渲染
 * @param element	表单中的input
 * @param myTipLabel	对勾或叉号
 * @param divCssClass	has-success或has-error
 */
function validCssApply(element, myTipLabel, divCssClass){
	if(!(element instanceof jQuery)){ 
		element = $(element);
	}
	element.parent().append(myTipLabel);
			 
	element.addClass(divCssClass);
}

/**
 * 表单成功效果
 */
function validSuccess(element, label) {
	labelReset(element);

	var myTipLabel = '<i class="glyphicon glyphicon-ok form-control-feedback my-tip-i"></i>';
	
	validCssApply(element, myTipLabel, 'success');
}
/**
 * 表单效验失败提示
 */
function validError(element, label) {
	labelReset(element);

	var myTipLabel = '<i style="color:red" class="glyphicon glyphicon-remove form-control-feedback my-tip-i"></i>'
					+'<label class="control-label my-tip-label" style="color:red">'
					+	label.text()
					+'</label>';
	
	validCssApply(element, myTipLabel, 'error');
}
/***********************************与页面相关的*************************************************/

function myDomInit() {
	nbspSpanInit();
}

/**
 * nbsp标签
 * <span class="nbsp" count="8"></span>
 */
function nbspSpanInit() {
	$($(".nbsp")).each(function(){
		var nbspCounts = parseInt($(this).attr("count"));
		var nbspHtml = '';
		for (var i = 0; i < nbspCounts; i++) {
			nbspHtml += '&nbsp;';
		}
		$(this).html(nbspHtml);
	});
}
/***********************************与数据库相关的***********************************************/
/**
 * 通过id得到名字
 */
function getColumnNameByIdAndTbName(id, columnName, tbName) {
	var resultName = '';
	//console.log("common.js:id="+id+"----columnName="+columnName+"----tbName="+tbName);
	if (isNull(id) || isNull(columnName) || isNull(tbName)) {
		alert("内部错误，common.js文件中getColumnNameByIdAndTbName方法参数不得为空！");
		return null;
	}
	$.ajax({
		url: "../common/getColumnNameByIdAndTbName.action",
		type: "post",
		async: false,
		data: {"id":id, "columnName":columnName, "tbName":tbName},
		success: function(data) {
			resultName = data;
		},
		error: function() {
			toastr.error("获取字段名发生错误，请稍后尝试");
		}
	});
	return resultName;
}
/***********************************与基本数据表有关的公共业务方法*******************************************/
/**
 * 通过id得到基本数据
 */
function getBasedataById(id) {
	//通过id得到基本数据
	var basedata = null;
	$.ajax({
		url: "../basedata/query.action",
		type: "post",
		data: {"id":id},
		async: false,//是为了数据能递出去
		success: function(data) {
			if (data.length != 0) {
				basedata = data[0];
			}
		},
		error: function() {
			alert("getBasedataById方法获取id为"+id+"的基础数据出错");
		}
	});
	return basedata;
}

/***********************************与用户有关的公共业务方法*******************************************/
function getUserNameById(id) {
	//用户id获取用户名
	var userName = null;
	$.ajax({
		url: "../user/getUserNameById.action",
		type: "post",
		data: {"id":id},
		async: false,//是为了数据能递出去
		success: function(data) {
			userName = data;
		},
		error: function() {
			toastr.error("获取角色创建人信息出错，请稍后尝试");
		}
	});
	return userName;
}


/***********************************与角色有关的公共业务方法*****************************************/


/**
 * 通过角色id返回角色名
 */
function getRoleNamebyId(roleId) {
	if (isNull(roleId)) {
		return;
	}
	var result = '';
	$.ajax({
		url: "../role/getRoleById.action",
		type: "post",
		data: {"id":roleId},
		async: false,
		success: function(role) {
			result = role.roleName;
		},
		error: function() {
			toastr.error("获取角色信息发生错误，请稍后尝试");
		}
	});
	return result;
}
/**
 * 得到用户所拥有的角色
 * @param userId 用户id值
 * @returns {___anonymous_result} 所拥有的角色(以逗号(,)分隔拼接)
 */
function getUserRoleNames(userId) {
	var result = '';
	$.ajax({
		url: "../userRole/getUserRoles.action",
		type: "post",
		data: {"userId":userId},
		async: false,
		success: function(userRoles) {
			var roleNames = '';
			$(userRoles).each(function(){
				//console.log(this);
				roleNames += getColumnNameByIdAndTbName(this.roleId,'role_name','tb_role') + ',';
			});
			result = roleNames.substring(0,roleNames.length-1);
		},
		error: function() {
			toastr.error("获取员工角色发生错误，请稍后尝试");
		}
	});
	return result;
}

/**
 * 得到用户所拥有的角色的id
 * @param userId 用户id
 * @returns {___anonymous_result} 所拥有的角色id(以逗号(,)分隔拼接)
 */
function getUserRoleIds(userId) {
	var result = '';
	$.ajax({
		url: "../userRole/getUserRoles.action",
		type: "post",
		data: {"userId":userId},
		async: false,
		success: function(userRoles) {
			var roleNames = '';
			$(userRoles).each(function(){
				roleNames += this.roleId + ',';
			});
			result = roleNames.substring(0,roleNames.length-1);
		},
		error: function() {
			toastr.error("获取员工角色发生错误，请稍后尝试");
		}
	});
	return result;
}

/**
 * 通过设备参数名id得到设备参数名的名
 */
function getAttrNameName(attrNameId) {
	var result = '';
	$.ajax({
		url: "../attrName/query.action",
		type: "post",
		async: false,
		data: {"id":attrNameId},
		success: function(data) {
			data = data[0];
			if (data == null || data == '') {
				result = 'null';
			}else {
				result = data.attrName;
			}
		},
		error: function() {
			toastr.error("获取参数名信息出错，请稍后尝试");
		}
	});
	return result;
}

/**
 * 通过类别id得到类别名
 */
function getCategoryNameById(categoryId) {
	var result = '';
	$.ajax({
		url: "../category/getCategoryNameById.action",
		type: "post",
		async: false,
		data: {"categoryId":categoryId},
		success: function(data) {
			if (data == null || data == '') {
				result = 'null';
			}else {
				result = data;
			}
		},
		error: function() {
			toastr.error("获取参数名信息出错，请稍后尝试");
		}
	});
	return result;
}

/**
 * 通过设备id得到设备名
 */
function getDeviceById(deviceId) {
	var result = '';
	$.ajax({
		url : "../device/query.action",
		type : "post",
		async : false,// 是为了内层ajax在之后访问
		data: {"deviceStatus":"1","id":deviceId},
		success : function(data) {
			if (data.length == 1) {
				result = data[0];
			}else {
				result = 'null';
			}
		},
		error : function() {
			toastr.error("获取设备信息出错，请稍后尝试");
		}
	});
	return result;
}

/**
 * 通过合同id得到合同信息
 */
function getContractById(contractId) {
	
	if(typeof(contractId)=="undefined" || contractId == null){ 
		return 'null';
	}
	var result = '';
	$.ajax({
		url : "../contract/query.action",
		type : "post",
		async : false,// 是为了内层ajax在之后访问
		data: {"id":contractId},
		success : function(data) {
			if (data.length == 1) {
				result = data[0];
			}else {
				result = 'null';
			}
		},
		error : function() {
			toastr.error("获取合同信息出错，请稍后尝试");
		}
	});
	return result;
}
/**
 * 通过设备id得到设备名
 */
function getCustomerById(customerId) {
	var result = '';
	$.ajax({
		url : "../customer/query.action",
		type : "post",
		async : false,// 是为了数据能递出去
		data : {"id" : customerId,"customerStatus":"1"},
		success : function(data) {
			if (data.length == 1) {
				result = data[0];
			}else {
				result = 'null';
			}
		},
		error : function() {
			toastr.error("获取客户信息出错，请稍后尝试");
		}
	});
	return result;
}

/***************************************与题目检索相关的公共方法**********************************************/
function repeatSearch(questionStem, questionType) {
	if (questionStem == null || questionStem == '' 
		||questionType == null || questionType == '') {
		return null;
	}
	var result = '';
	$.ajax({
		url: "../questionIndex/query.action",
		type: "post",
		async: false,
		data: {"questionStem": questionStem, "questionType":questionType},
		success: function(data) {
			result = data;
		},
		error: function() {
			toastr.error("重复检测发生错误，请稍后尝试");
		}
	});
	
	return result;
	
}


/***************************************index专门用的，不用管******************************************/
function getRoleNames(userId) {
	var result = '';
	$.ajax({
		url: "userRole/getUserRoles.action",
		type: "post",
		data: {"userId":userId},
		async: false,
		success: function(userRoles) {
			var roleNames = '';
			$(userRoles).each(function(){
				//console.log(this);
				roleNames += getColumnName(this.roleId,'role_name','tb_role') + ',';
			});
			result = roleNames.substring(0,roleNames.length-1);
		},
		error: function() {
			toastr.error("获取员工角色发生错误，请稍后尝试");
		}
	});
	return result;
}

/**
 * 通过id得到名字
 */
function getColumnName(id, columnName, tbName) {
	var resultName = '';
	//console.log("common.js:id="+id+"----columnName="+columnName+"----tbName="+tbName);
	if (isNull(id) || isNull(columnName) || isNull(tbName)) {
		alert("内部错误，common.js文件中getColumnNameByIdAndTbName方法参数不得为空！");
		return null;
	}
	$.ajax({
		url: "common/getColumnNameByIdAndTbName.action",
		type: "post",
		async: false,
		data: {"id":id, "columnName":columnName, "tbName":tbName},
		success: function(data) {
			resultName = data;
		},
		error: function() {
			toastr.error("获取字段名发生错误，请稍后尝试");
		}
	});
	return resultName;
}
